home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 17 / CU Amiga Magazine's Super CD-ROM 17 (1997)(EMAP Images)(GB)[!][issue 1997-12].iso / CUCD / Programming / DiceSource / installer / doc / release.notes < prev   
Encoding:
Text File  |  1992-09-08  |  22.1 KB  |  539 lines

  1. Installer Release Notes
  2.  
  3.  
  4. This document contains any changes to the Installer and its scripting language
  5. that were made after the release of version 1.0. This is a suppliment to the
  6. documentation found on the '91 DevCon disks.
  7.  
  8. ----------------------------------------------------------------------------
  9.  
  10. Notes:
  11.  
  12.     The Installer now requires a 10000 byte stack. Please alter any
  13. Installer script icons so they have a stack size of 10000.
  14.  
  15.     Please remember that the string formating command
  16.  
  17.     ("..." <value> <value> ...)
  18.  
  19. requires that interger values be formatted by "%ld", not "%d". All integer
  20. variables in the Installer are LONGWORDS.
  21.  
  22.     The documentation for "working" found in the DevCon notes is incorrect.
  23. The correct template is
  24.  
  25.     (working <string> <string> ...)
  26.  
  27. where the strings will be concatinated to form a message which will appear
  28. below a standard line that reads "Working on Installation".
  29.  
  30.     The maximum size of a string in a script is 512 bytes. The maximum size
  31. of any string variable is 10000 bytes. If you need to create long help text
  32. you will need to break the text into 512 byte chunks and then use the
  33. automatic string concatination ability of the installer to create the final,
  34. larger string. Also, don't overlook the the use of line continuation of
  35. strings in scripts to make your scripts more managable. If you ever find
  36. that the installer reports a stack overflow error, look to see if it caused
  37. by too many small strings being concatinated and merge them into larger
  38. blocks. 
  39.  
  40.     The "run" and "execute" statements only return the result of the command
  41. run or executed under 2.0; they always return 0 under 1.3. If you must have
  42. some result under both 1.3 and 2.0, try this combo:
  43.  
  44.     # in the DOS script to execute:
  45.     failat 31
  46.     command
  47.     if error
  48.         setenv installer-result 10
  49.     else
  50.         if warn
  51.             setenv installer-result 5
  52.         else
  53.             setenv installer-result 0
  54.         endif
  55.     endif
  56.  
  57.     ; in the installer script
  58.     (execute DOS-Script)
  59.     (set theResult (getenv "installer-result"))
  60.  
  61.     When providing a pattern in a script, be sure it is less than 65
  62. characters in length. Although patterns up to 128 characters in size may
  63. work, the maximum reliable length is 64.
  64.  
  65.     To convert an integer to a string, use the "cat" function. All integer
  66. arguments to "cat" are converted to strings during concatination.
  67.  
  68.     To convert a string to an integer do this:
  69.  
  70.     (set <interger-var> (+ <string-var>))
  71.  
  72.     One command that was previously left undocumented is the "debug"
  73. statement. Its template is
  74.  
  75.     (debug <anything> <anything> ...)
  76.  
  77. When the Installer is run from a CLI, "debug" will print the values of the
  78. parameters with a space bewteen each parameter. For example, the statements
  79.  
  80.     (set myvar 2)
  81.     (debug "This value of 'myvar' is" myvar)
  82.  
  83. will print "This value of myvar is 2". If the parameter is an uninitialized
  84. variable, then debug will print "<NIL>" as its value.
  85.  
  86. ----------------------------------------------------------------------------
  87.  
  88. Changes for Installer v1.1 (10-1-91):
  89.     Added a new variable "@execute-dir". If this variable is set to a valid
  90. path, then the installer will change directory to it whenever a "run" or
  91. "execute" statement is performed.
  92.  
  93. ----------------------------------------------------------------------------
  94.  
  95. Changes for Installer v1.2 (10-4-91):
  96.     Changed documentation for "working" statement to match reality.
  97.  
  98. ----------------------------------------------------------------------------
  99.  
  100. Changes for Installer v1.4 (10-16-91):
  101.     The "asknumber" now prints the allowed range below the integer gadget
  102. if the "range" parameter is given. Also, the user cannot proceed without
  103. entering a valid number.
  104.     Fixed many UI and stack-related bugs. Installer no longer munges long
  105. lines found in the "user-startup" file.
  106.     Fixed "exists" statement to match the documented return values.
  107.     Added a new pattern matcher which more closely matches the functionality
  108. of the one found in the 2.0 dos.library.
  109.     Added "user" statement which can be used to change the user level of the
  110. current installation. This statement should ONLY be used when debugging
  111. scripts. Remove such statements from any script before distribution of your
  112. product. The format is
  113.  
  114.     (user <user-level>)
  115.  
  116. where <user-level> is either 0 (NOVICE), 1 (AVERAGE) or 2 (EXPERT). This
  117. statement returns the current user level.
  118.  
  119. ----------------------------------------------------------------------------
  120.  
  121. Changes for Installer v1.5 (10-17-91):
  122.     Fixed "message" statement so its works correctly when help is provided.
  123.     Fixed "run" and "execute" commands so that it does not abort incorrectly.
  124. Also, see the notes above for more information about the "run" and "execute".
  125.     Fixed "working" so that it resets its text positioning.
  126.     The LOGFILE tooltype can now accept a complete pathname, just not a file
  127. name.
  128.  
  129. ----------------------------------------------------------------------------
  130.  
  131. Changes for Installer v1.6 (10-19-91):
  132.     The Installer now handles negative numbers properly.
  133.     Fixed pattern matching code so its doesn't overrun the stack. See note
  134. above about length of patterns.
  135.  
  136. ----------------------------------------------------------------------------
  137.  
  138. Changes for Installer v1.7 (11-27-91):
  139.     Added "shiftleft" and "shiftright" math operations. Their formats are
  140.  
  141.     (shiftleft <number> <amount to shift>)
  142.     (shiftrght <number> <amount to shift>)
  143.  
  144.     Added "substr" statement to perform string operations. The format is
  145.  
  146.     (substr <string> <start> [<count>])
  147.  
  148. where start begins at 0 in the string. Count is optional -- if omitted then
  149. the remaining part of the string is returned.
  150.     New, improved, "protect" command. The new format is
  151.  
  152.     (protect <filename> [<protection values>])
  153.  
  154. where protection values is a string giving changes to the file's protection
  155. bits. For example, "-d +a" would make a file undeletable and set to archived.
  156. As before, just giving a filename returns the current protection bits.
  157. Finally, the old version of "protect" still works. Which version is used is
  158. based on whether the second parameter is an integer (old method) or a string
  159. (new method).
  160.     Fixed bugs in "tooltype" statement involving stack size and tooltypes.
  161.     Fixed bug in "askfile" involving text in file name string gadget.
  162.     Fixed bug in "askdir" involving the default drawer being on an unmounted
  163. volume. NOTE: It is always best to insure that the volume you want is
  164. mounted by using the "askdisk" command. That's one of the reasons why its
  165. provided.
  166.     The predefined variables TRUE and FALSE now work right.
  167.     The predefined variable "@copylib-help" now describes the user interface
  168. correctly.
  169.     Fixed bug in "copyfiles" involving not cloning a file properly when
  170. inside a drawer that was just created.
  171.     The "select" command in now a control statement. This means that "select"
  172. can be used as a case select construct. Only the selected element will be
  173. evaluated.
  174.     The "getassign" command now works for variables instead of just literals.
  175.     A busy pointer is displayed while the script is being compiled.
  176.  
  177. ----------------------------------------------------------------------------
  178.  
  179. Changes for Installer v1.8 (12-15-91):
  180.     Version 1.7 didn't work on 68000 systems. This one does.
  181.     Added a SCRIPT tooltype that allows specification of the installer script
  182. to use.
  183.     Fixed "getassign" so that it returns an empty string when no assignment
  184. exists instead of nil.
  185.     Changed "askfile" do the default path can be either reference a file or a
  186. drawer. If a file, the filename gadget is filled in.
  187.     Added a new parameter "swapcolors" to "tooltype". This instructs the
  188. installer to swap the first two planes of the image of the icon being modified
  189. if the version of the OS if less than 36 (version 1.3-). This does mean that
  190. your icons need have the 2.0 color scheme on your distribution disks.
  191.     Added a new parameter "newpath" to "askdir" that allows for non-existant
  192. paths to be supplied as the default drawer. This is similar to the way that
  193. version 1.0 worked. The format is
  194.  
  195.     (askdir ... (newpath))
  196.  
  197.     Added a new function "expandpath" that will take an any path and return
  198. the full path. For example, it might expand "SYS:c" to "System2.0:c". The
  199. format is
  200.  
  201.     (expandpath <path>)
  202.  
  203.     And finally, the installer now has user-defined procedures (subroutines).
  204. This functionality is very primative. There are no local variables. To define
  205. a new prodecure you use the "prodedure" command:
  206.  
  207.     (procedure <procedure-name> <statement>)
  208.  
  209. You can then call the procedure thus:
  210.  
  211.     (<procedure-name>)
  212.  
  213. Note that procedure-name is not a string, just a symbol name.
  214.  
  215. ----------------------------------------------------------------------------
  216.  
  217. Changes for Installer v1.9 (12-15-91):
  218.     Fixed "makedir" display.
  219.     Fixed "copyfiles" so a choice of a directory works.
  220.     If "infos" is specified for "copyfiles" and the destination drawer does
  221. not exist, a default icon will be made for the drawer the Installer creates.
  222.     Changed "copylib" so it will create the destination directory as long as
  223. there is only one level missing. For example, copying to a non-existant
  224. "DEVS:midi" would create the directory "midi", but copying to "DEVS:midi/extra"
  225. where neither "midi" or "extra" exists would fail. This duplicates the
  226. functionality of "copyfiles".
  227.     Fixed "procedure" so that it actually works!
  228.     Added a new pre-defined variable "@app-name" which contains the APPNAME
  229. value given at startup.
  230.     Added "noreq" parameter to "exists" so no requester is displayed if the
  231. path given is not on a mounted volume. In this case the result is 0 (doesn't
  232. exist). The format is:
  233.  
  234.     (exists <filename> (noreq))
  235.  
  236.     Added "resident" parameter to "getversion". You can now get the version of
  237. a library or device in memory. For example:
  238.  
  239.     (getversion "intuition.library" (resident))
  240.  
  241. would return the version/revision of intuition. Note that using the "resident"
  242. parameter causes first the library and then the device list to be checked.
  243.  
  244.     Added option to "exit" to print extra explanatory text in the final window.
  245. The format is
  246.  
  247.     (exit <string> <string> ...)
  248.  
  249.     Added a new function "database", which can return information about the
  250. Amiga that the Installer is running on. The format is
  251.  
  252.     (database <feature>)
  253.  
  254. where "feature" is a string. This function always returns a string result,
  255. even if the result looks like a number. The feature given is unknown, the
  256. function returns "unknown". The currently understood features and their
  257. possible values are:
  258.  
  259.     "vblank": "50", "60"
  260.     "cpu": "68000", "68010", "68020", "68030", "68040"
  261.  
  262.     And now for the big one: The initial user options displays are now a
  263. command! The format is
  264.  
  265.     (welcome <string> <string> ...)
  266.  
  267. Old scripts will still work, as the Installer can detect that you never
  268. referenced "welcome" during compilation. This means that you can execute
  269. code before the first displays come up. You can even abort if you find
  270. conditions unbearable. Note that the state of the "@user-level" and "@pretend"
  271. variables will be based on the initial defaults including any modification by
  272. tooltypes. The string arguments are prepended to the standard help text for
  273. whichever of the two initial displays appears first.
  274.  
  275. ----------------------------------------------------------------------------
  276.  
  277. Changes for Installer v1.10 (12-30-91):
  278.     Fixed bug in "copyfiles" (although I would like others to test this).
  279. The bug was that sometimes doing a confirmed copyfiles followed by an
  280. unconfirmed copyfiles would cause a crash on the next user interface item.
  281.     Fixed bug in the code that makes an assign under 1.3. ("I hate, I hate,
  282. I hate DOS 1.3!")
  283.     Added a debugging parameter to "askdisk". If you add "(assigns)" as a
  284. parameter, then assigns will match the askdisk request also. Note that this
  285. parameter should be removed before putting the install script on your
  286. distribution disk!
  287.     Expanded the parameter "optional" when used with "copyfile" or "copylib",
  288. also added it to "delete". The new format is
  289.  
  290.     (optional <option> <option> ...)
  291.  
  292. The first three options are mutually exclusive and do not apply to "delete":
  293.  
  294.     "fail" - installer aborts if could not copy (the default)
  295.     "nofail" - installer continues if could not copy
  296.     "oknodelete" - aborts if can't copy, unless reason was "delete protected"
  297.  
  298. The next two apply to all the cases:
  299.  
  300.     "force" - unprotect destination
  301.     "askuser" - ask user if the file should be unprotected (but not in novice)
  302.  
  303. In the case of "askuser", the default for novice mode is an answer of "no".
  304. Therefore, you may want to use "force" to make the novice mode default answer
  305. appear to be "yes".
  306.  
  307.     Added the statement "delopts" which allows for a global change to the
  308. defaults to "copyfile", "copylib" and "delete". The format is
  309.  
  310.     (delopts <option> <option> ...)
  311.  
  312. just like in the expanded version of "optional" given above. The default
  313. global options is "fail".
  314.  
  315. ----------------------------------------------------------------------------
  316.  
  317. Changes for Installer v1.11 (1-15-92):
  318.     Fixed enforcer hit in code that compiles the "procedure" statement.
  319.     Fixed bug in "optional". Sometimes it wouldn't work in "copylib" or
  320. "copyfile".
  321.     Changed Installer so, for copy/deletion purposes, a write-protected file
  322. is the same as a delete-protected file. Commodore feels that for many users,
  323. these two states are used interchangably.
  324.     Changed "copyfiles", "copylib", "askdir" and "askfile" so they can handle
  325. relative pathnames for source and destination parameters.
  326.     Changed the format statement ("..." parameter parameter) so it can accept
  327. a string varible as the formating string instead of a literal string. So
  328. the format statement's new form is
  329.  
  330.     (<format string> <parameter> ...)
  331.  
  332. ----------------------------------------------------------------------------
  333.  
  334. Changes for Installer v1.12 (1-16-92):
  335.     Fixed problem that would cause "BAD LOCAL TEXT" to show up as a message
  336. occationally.
  337.     Added two new selectors for "database": "graphics-mem" and "total-mem".
  338. Remember that "database" always returns its results as strings.
  339.  
  340. ----------------------------------------------------------------------------
  341.  
  342. Changes for Installer v1.13 (2-8-92):
  343.     Added the "newpath" and "disk" parameters to "askfile" -- "askfile" and
  344. "askdir" now have similar parameters. See above about "newpath". The
  345. parameter "disk" causes a drive list to appear first. 
  346.     Added "getdevice" function. Given a pathname, "getdevice" returns the
  347. dos device name of where that path is. For example, "c:mount" as a path
  348. might return "WB_2.x". The function's format is
  349.  
  350.     (getdevice <path>)
  351.  
  352.     Added functionality to "getassign". If a device name is used as the name
  353. and the search is limited to devices using the "d" option, then "getassign"
  354. will return the device or volume name if the device exists, otherwise it will
  355. return a empty string. An example usage would be (getassign "df1" "d").
  356.     Added a "strlen" function to find the length of a string. The format is
  357.  
  358.     (strlen <string>)
  359.  
  360.     Added a "patmatch" function that will determine is a string matches an
  361. AmigaDOS pattern. The function return either TRUE or FALSE. The format is
  362.  
  363.     (patmatch <pattern> <string>)
  364.  
  365.     Added a tooltype of PRINTER. If set to FALSE, then the printer option in
  366. the log file settings will be ghosted. There is also a NOPRINT command line
  367. parameter.
  368.     Added a "nogauge" parameter to "copyfiles" and "copylibs". This will
  369. disable the copy status indicator. The format is
  370.  
  371.     (nogauge)
  372.  
  373.     Added a "quiet" parameter to "exit" which causes the normal final report
  374. display to be skipped. A tidbit for those who want to more that install
  375. things with the installer... The format is
  376.  
  377.     (quiet)
  378.  
  379.     In the same vein, added a predefined variable "@abort-button". If the
  380. script sets this to some text string, then the text "Abort Install" will
  381. be replaced by the value of "@abort-button".
  382.     Changed the copy status gauge so it doesn't change the pointer and title
  383. bar between files.
  384.     Changed some of the help texts so that the gadget descriptions conform
  385. more closely to the Style Guide.
  386.     Changed "copyfiles" so that an script error occurs if more than one
  387. of "all", "pattern" or "choices" is used.
  388.     Fixed problems with the "delete protection" display. Also changed the
  389. buttons to read "Overwrite" and "Skip File", which is less ambiguous.
  390.     Fixed "exit" so it concatinates strings as documented above.
  391.     Fixed error message code so that long messages don't corrupt memory.
  392.     Fixed the CLI parameter parsing. Sometimes the wrong results would occur.
  393.     Fixed some parsing bugs in the compiler part of the Installer.
  394.     The Installer no longer uses proportional text. It was just not working
  395. properly in all cases. (So much for the Grand Experiment.)
  396.  
  397. ----------------------------------------------------------------------------
  398.  
  399. Changes for Installer v1.14 (2-17-92):
  400.     Added a new tooltype/CLI parameter LANGUAGE and a new pre-defined
  401. variable "@language". This variable will be set to the text "english" by
  402. default, but can be overriden by the LANGUAGE value. Scripts can use this
  403. anyway that makes sense.
  404.     Fixed a minor bug in copyfiles, etc., that would report that there was a
  405. DOS error when the user aborts during a file copy.
  406.     Fixed a cosmetic bug in the file copy status indicator. The Installer
  407. will now delete path elements from the destination path when printing so that
  408. the text will not overwrite the areas outside the status display. An ellipsis
  409. is prepended to the truncated pathname to indicate this has occured.
  410.  
  411. ----------------------------------------------------------------------------
  412.  
  413. Changes for Installer v1.15 (3-13-92):
  414.     The Installer now prints the Prompt text to any of the "ask..." statements
  415. in the log file. Word wrapping is performed on the prompt text. The general
  416. form would be
  417.  
  418.     >This is the prompt.
  419.     Ask Choice: User's choice was Whatever.
  420.  
  421. This form was chosen for reasons that cannot be explained at this time :-)
  422. In the future this will hopefully be changed to
  423.  
  424.     Ask Choice: "This is the prompt."
  425.     User's choice was Whatever.
  426.  
  427. Either way, this will hopefully make the log file more useful as a customer
  428. service tool.
  429.  
  430. ----------------------------------------------------------------------------
  431.  
  432. Changes for Installer v1.16 (3-16-92):
  433.     Fixed a bug involving the wrapping of really long words (including such
  434. things as gigantic pathnames).
  435.  
  436. ----------------------------------------------------------------------------
  437.  
  438. Changes for Installer v1.17 (3-23-92):
  439.     Fixed a bug that caused an enforcer hit when using help from the AskDisk
  440. display.
  441.     Also, the last two releases had bad version numbers in the About display.
  442.  
  443. ----------------------------------------------------------------------------
  444.  
  445. Changes for Installer v1.18 (4-14-92):
  446.     Fixed a bug involving @execute-dir related code that prevented reseting
  447. the value back to "".
  448.     Fixed a bug with command line parameters that was mishandling keywords.
  449.  
  450. ----------------------------------------------------------------------------
  451.  
  452. Changes for Installer v1.19 (4-28-92):
  453.     It appears that the supposedly logical operators where actually being
  454. handled as bitwise operators!! This has been fixed and four new operators
  455. have been added: "bitand", "bitor", "bitxor" and "bitnot". Please check
  456. your scripts to see if you are using any of the logical operators ("and",
  457. "or", "xor" and "not") as bitwise and change them to the four new operators.
  458.     Changed the window title bar text when "complete" is used so that the
  459. words "Press 'Esc' to abort" will be visible. This is done by removing the
  460. name of the install script if the text of the window title would be clipped
  461. if the install script name was there.
  462.  
  463. ----------------------------------------------------------------------------
  464.  
  465. Changes for Installer v1.20 (5-15-92):
  466.     Fixed some enforcer hits involving "working".
  467.     Improved how the Installer handles laying out checkboxs and radio
  468. gadgets when there isn't enough room. Attempts will be made to switch to
  469. topaz-8 and/or reduce the spacing between elements.
  470.  
  471. ----------------------------------------------------------------------------
  472.  
  473. Changes for Installer v1.21 (7-6-92):
  474.     Fixed problems with freeing string variables used as parameters. 
  475.     Changed "startup" so that if the user skips the adding of "execute
  476. s:user-startup" to his startup sequence, "user-startup" is still changed
  477. to include the startup commands.
  478.     A comment: The prompt and help parameters for the "startup" statement
  479. are only used by the confirmation display to edit "user-startup". This only
  480. happens in EXPERT mode.
  481.  
  482. ----------------------------------------------------------------------------
  483.  
  484. Changes for Installer v1.22 (7-16-92):
  485.     Fixed problems with the "newname" parameter. It was persisting through
  486. multiple calls to "copyfiles".
  487.     Although "newname" was mentioned as a parameter to "copylib", it was
  488. never actually implemented. It now works. Note that the destination file
  489. name is normally the file part of the source path.
  490.  
  491. ----------------------------------------------------------------------------
  492.  
  493. Changes for Installer v1.23 (8-3-92):
  494.     It is now an error to attempt to change the type of any variable
  495. beginning with '@' (unless the variable is currently <nil>).
  496.     Fixed problem with recursive file copying. The user's ability to skip a
  497. copy would still cause an abort.
  498.     The "delete" statement no longer deletes the icon of a file that exists
  499. but was not deleted.
  500.     Fixed bug in listview that was causing enforcer hits.
  501.     A comment: "tackon" cannot deal with a leading '/' in the <file>
  502. parameter. This may be fixed in a future version.
  503.     Added more error checking to insure that commands are being called with
  504. the required parameters. Note that "copyfiles" requires a source!
  505. This is not correct:
  506.  
  507.     (copyfiles
  508.         /* no source */
  509.         (choices "df0:file1" "df0:file2")
  510.         ...
  511.     )
  512.  
  513. It should actually be:
  514.  
  515.     (copyfiles
  516.         (source "df0:")
  517.         (choices "file1" "file2")
  518.         ...
  519.     )
  520.  
  521. ----------------------------------------------------------------------------
  522.  
  523. Changes for Installer v1.24 (9-1-92):
  524.     If the "startup" statement finds a startup-sequence it can't deal with,
  525. it use to report an error and abort. This wasn't too cool. As an interim fix,
  526. it merely assumes that an expert made the startup-sequence and that the
  527. proper commands to execute user-startup were put in place. Because of
  528. localization issues, the real solution (a new error message) cannot be added
  529. at this time. (Note: This was mainly happening to those who had dual startups
  530. so they could boot into either 1.3 or 2.0. An expert state, I would say.)
  531.     Changed "settooltype" parameter so a valueless tooltype could be added. The
  532. format is
  533.  
  534.     (settooltype <tooltype-string> "")
  535.  
  536. Remember that (tooltype <tooltype-string>) deletes the tooltype given.
  537.     Fixed bug involving predefined string variables that was causing enforcer
  538. hits.
  539.